import Http from '@/services/api/index';
const Util = require('@/utils/util.js')
const Toast = require('@/utils/toast');
const {
  login
} = require('@/middleware/auth');
Page({
  data: {
    canIUseGetUserProfile: false,
    checked: false,
    redirect: null,
    params: null
  },

  onLoad(options) {
    this.setData({
      redirect: options.redirect,
      params: options.params
    });
    // 检查是否已登录
    // this.checkLoginStatus();
  },

  // 检查登录状态
  async checkLoginStatus() {
    try {
      const token = wx.getStorageSync('refresh_token');
      if (token) {
        // 验证token有效性
        const isValid = await this.verifyToken(token);
        if (isValid) {
          wx.switchTab({
            url: '/pages/home/home'
          });
        }
      }
    } catch (error) {
      console.error('检查登录状态失败', error);
    }
  },

  // 验证token
  async verifyToken(token) {
    console.log(token)
    // 调用后端API验证token
    new Promise((resolve, reject) => {
      Http.post('/api/token/verify', {
        token: token
      }, {
        header: {
          'Content-Type': 'application/json' // 明确指定JSON格式
        },
        skipAuth: true, // 可选：跳过自动添加token
        isLoading: false
      }).then((res) => {
        console.log(res)
      }).catch(err => {
        console.error(err)
      })
    })
    // 返回Promise<boolean>
  },

  // 用户协议勾选
  onAgreementChange() {
    this.setData({
      checked: !this.data.checked
    });
  },

  // 查看用户协议
  navigateToAgreement() {
    wx.navigateTo({
      url: '/pages/agreement/agreement'
    });
  },

  // 查看隐私政策
  navigateToPrivacy() {
    wx.navigateTo({
      url: '/pages/privacy/privacy'
    });
  },

  // 获取用户信息(新API)
  getUserProfile() {
    if (!this.data.checked) {
      wx.showToast({
        title: '请先同意协议',
        icon: 'none'
      });
      return;
    }
    // 从页面的onLoad中获取参数
    const {
      redirect,
      params
    } = this.data;
    // --wx.getUserProfile接口废弃，改用直接登录的方式
    login().then((res) => {
      setTimeout(function () {
        if (redirect) {
          const decodedParams = params ? JSON.parse(decodeURIComponent(params)) : {};
          const queryString = Object.keys(decodedParams)
            .map(key => `${key}=${decodedParams[key]}`)
            .join('&');
          console.log(`/${decodeURIComponent(redirect)}?${queryString}`)
          console.log(Util.checkPathHasTabbar(decodeURIComponent(redirect)))
          wx.redirectTo({
            url: `/${decodeURIComponent(redirect)}?${queryString}`
          })
        } else {
          wx.switchTab({
            url: '/pages/home/index'
          });
        }
        // 默认跳转到首页
      }, 1750)
    }).catch((err) => {
      console.error(err)
    })
  },

  // 获取用户信息(旧API兼容)
  onGetUserInfo(res) {
    if (!this.data.checked) {
      wx.showToast({
        title: '请先同意协议',
        icon: 'none'
      });
      return;
    }

    if (res.detail.userInfo) {
      this.onLoginSuccess(res.detail);
    } else {
      wx.showToast({
        title: '授权失败',
        icon: 'none'
      });
    }
  },

  // 登录成功处理
  async onLoginSuccess(userInfo) {
    wx.showLoading({
      title: '登录中...'
    });

    try {
      // 1. 获取code
      const loginRes = await wx.login();

      // 2. 调用后端登录接口
      const res = await wx.request({
        url: 'https://your-api.com/auth/login',
        method: 'POST',
        data: {
          code: loginRes.code,
          userInfo: userInfo
        }
      });

      // 3. 保存token
      if (res.data.code === 0 && res.data.data.token) {
        wx.setStorageSync('token', res.data.data.token);
        wx.setStorageSync('userInfo', userInfo);

        wx.hideLoading();
        wx.showToast({
          title: '登录成功'
        });

        // 跳转到首页
        setTimeout(() => {
          wx.switchTab({
            url: '/pages/home/home'
          });
        }, 1500);
      } else {
        throw new Error(res.data.message || '登录失败');
      }
    } catch (error) {
      wx.hideLoading();
      console.error('登录失败', error);
      wx.showToast({
        title: error.message || '登录失败',
        icon: 'none'
      });
    }
  }
});